const express =  require('express');
const app = express();
// 关联数据库
// 下载mongoose  npm i mongoose@5 -S
const mongoose = require('mongoose');
const promise = new Promise((resolve,reject)=>{
    mongoose.connect("mongodb://localhost:27017/student_info",{useNewUrlParser:true,useUnifiedTopology:true});
    mongoose.connection.once('open',err=>{
       if(!err){
           console.log('服务器启动成功！！');
           resolve();
       }else{
           console.log(err);
           reject(err);
       }
    })
});
// 约束条件
;(async ()=>{
    // 数据库连接成功
    await promise;
    // console.log(111);
    const Schema = mongoose.Schema;//获取schema对象
    // 创建约束对象
    const stuinfosSchema = new Schema({
        stu_id:{
            type:String,//数据类型
            required:true,//是否必须 true就是必须 false不是必须
            unique:true//是否唯一
        },
        name:{
            type:String,
            required:true,
            unique:false
        },
        age:{
            type:Number,
            required:true,
            unique:false
        },
        sex:{
            type:String,
            required:true,
            unique:false
        },
        hobby:{
            type:Schema.Types.Mixed, //所有类型都可以
        },
        createTime:{
            type:Date,
            default:Date.now  //默认值
        }
    })
    // 数据库  集合 一条条文档   每一条文档都要符合约束条件  通过mongoose
    // 创建模型对象
    const Stuinfos = mongoose.model('stuinfos',stuinfosSchema);

    // 创建文档
    const s1 = new Stuinfos({
        stu_id:'01',
        name:'tutu',
        age:18,
        sex:'男',
        hobby:'洋妞'
    }) 
    // 保存
    s1.save(err=>{
        if(!err) console.log('保存成功！！');
        else console.log(err);
    })

})()
// 往数据库中进行数据的增删改查   先去创建集合  创建一条条文档   增删改查
// 创建集合 和文档之前   就要设计好集合中有哪些字段  这些字段都是什么数据类 是必须有还是空着也可以 是唯一值还是不是唯一值
// 例如现在 学生个人信息表（集合）
/* 
创建约束条件
stu_id 字符串 必须有的 是唯一的
name  字符串 必须有的 不是唯一的
age   数字number  必须有的  不是唯一
sex   字符串   必须有的   不是唯一
hobby  字符串  不是     不是
*/
// 数据库连接成功   创建约束条件  插入数据  有了数据之后 能做数据的增删改查


app.listen(8080,err=>{
    if(!err) console.log('服务器启动！！');
    else console.log(err);
})
// 同数据库没有一点关系

/* 
连接数据库
创建约束条件，将约束条件和集合连接系起来
添加数据


*/